import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';

const Category = sequelize.define('Category', {
  id: {
    type: DataTypes.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  
  // 分类名称
  name: {
    type: DataTypes.STRING(50),
    allowNull: false,
    validate: {
      notEmpty: {
        msg: '分类名称不能为空'
      },
      len: {
        args: [1, 50],
        msg: '分类名称不能超过50字符'
      }
    }
  },
  
  // 分类类型：收入(income) 或 支出(expense)
  type: {
    type: DataTypes.ENUM('income', 'expense'),
    allowNull: false,
    validate: {
      notEmpty: {
        msg: '分类类型不能为空'
      }
    }
  },
  
  // 分类图标
  icon: {
    type: DataTypes.STRING(50),
    defaultValue: 'default'
  },
  
  // 分类颜色
  color: {
    type: DataTypes.STRING(20),
    defaultValue: '#4F46E5'
  },
  
  // 是否为系统预设分类
  isSystem: {
    type: DataTypes.BOOLEAN,
    defaultValue: false
  },
  
  // 排序序号
  sortOrder: {
    type: DataTypes.INTEGER,
    defaultValue: 0
  },
  
  // 是否启用
  isActive: {
    type: DataTypes.BOOLEAN,
    defaultValue: true
  }
}, {
  tableName: 'categories',
  timestamps: true,
  indexes: [
    {
      unique: true,
      fields: ['name', 'type']
    }
  ]
});

export default Category;